OpenGL supports per-window double buffering. A double buffered window has two color buffers designated the front and the back buffer. The front buffer is the displayed buffer; the back buffer is used to compose the next image to be displayed. When a buffer swap is requested, the contents of the back buffer are logically transferred to the front buffer. Double buffering is very important for 3D since it enables smooth animation of rendered frames.
Hardware support obviates the expense of a physical data transfer and allows the buffer swap to be timed with the monitor's vertical retrace interval (when the CRT's gun is moving back to the top of the screen to begin scanning out the next frame of video). Timing the buffer swap with vertical retrace avoids a visual artifact known as tearing that occurs when the buffer swap occurs in the midst of the window being scanned to the monitor, getting a portion of the image from the old front buffer and a portion from the new front buffer.
Without hardware support, the back buffer is normally allocated from host memory. In this case, a buffer swap requires a copy from host memory to the frame buffer. It is also more difficult to synchronize with vertical retrace. Because rendering to off-screen memory normally makes it impossible to utilize graphics hardware acceleration, double buffering hardware is typical for 3D GTX-RD and GT-XRD systems.
Normally, hardware double buffering is implemented by dividing the frame buffer into two color buffers. For example, a 24-bit frame buffer when single buffered would support 12-bit double buffered windows. This introduces additional pixel formats, not only for 12-bit depth, also to describe which 12-bit buffer is currently considered the front buffer for specific windows.